﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace BCCommon
{
    /// <summary>
    /// 数据库访问。
    /// </summary>
    [NonInjection]
    public interface IDatabaseBackContext : IDisposable
    {
        /// <summary>
        /// 主库，读写库。
        /// </summary>
        IDbConnection Master { get; }

        /// <summary>
        /// 从库，只读库，当存在事务时从库使用主库连接。
        /// </summary>
        IDbConnection Slave { get; }

        /// <summary>
        /// 当前正在进行的事务。
        /// </summary>
        IDbTransaction Transaction { get; }

        /// <summary>
        /// 启动事务。
        /// </summary>
        /// <returns></returns>
        void BeginTransaction();

        /// <summary>
        /// 启动事务。
        /// </summary>
        /// <param name="isolationLevel">事务隔离级别。</param>
        /// <returns></returns>
        void BeginTransaction(IsolationLevel isolationLevel);

        /// <summary>
        /// 提交事务。
        /// </summary>
        void Commit();

        /// <summary>
        /// 回滚事务。
        /// </summary>
        void Rollback();
    }
}
